def count_min_cost(N, price:list):
    """ Функция определяет минимальную траекторию движения
        по одномерному массиву от точки 1 до N с учетом
        стоимости прохождения каждой клетки.
        Варианты движения: +1; +2.

    """

    C = [float("inf"), price[1], price[1] + price[2]] + [0] * (N-2)
    step = []

    for i in range(3, N+1):

        C[i] = price[i] + min(C[i-1], C[i-2])

    step.append(N)

    for i in range(N+1, 0, -1):

        if C[i-1] <= C[i-2]:
            step.append(i-1)
        elif C[i-1] > C[i-1]:
            step.append(i-2)

    step = step[::-1]
    
    for i in range(len(step)):
        if i == len(step)-1:
            print(step[i], end='\n')
            break
        print(step[i], end=' -> ')

N = 5
price = [0, 2, 3, 1, 1, 5]

count_min_cost(N, price)
